﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 静态02
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(MyMath.ID);
        }
    }

    /// <summary>
    /// 使用static修饰的类是静态类，静态类不能进行实例化，内部只允许有静态成员或const修饰的常量
    /// </summary>
    static class MyMath
    {
        public static int ID;
        // 常量修饰符
        const int NUMBER_1 = 1;
        const int NUMBER_2 = 2;
        const int NUMBER_3 = 3;
        const int NUMBER_4 = 4;
        const int NUMBER_5 = 5;

        // 静态类可以有构造方法，但是构造方法必须是无参的，不能带访问修饰符，不能重载，只能这样写
        // 静态的构造方法用于初始化任何静态数据，或用于执行仅需执行一次的特定操作，
        // 在创建一个实例或引用任何静态成员之前，将自动调用静态构造函数
        static MyMath()
        {
            ID = 1001;  //如果不写这句话，系统会为静态变量赋一默认值
        }

        public static void M()
        {
            int a = NUMBER_2;
        }
    }

    // 静态类是密封的，不能再使用sealed去修饰该类
    class A { }// : MyMath { }
}
